package kr.salebeans.cm.util;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtils {

	/**
	 * 기본형식({@link DateConstants#DF_BASE})으로 된 현재날짜를 문자열로 반환한다.
	 * 
	 * @return 현재날짜(yyyyMMddHHmmss)
	 */
	public static String getCurrentBaseDateString() {
		Date currentDate = getCurrentDateTime();
		return toDateString(currentDate, "yyyyMMddHHmmss");
	}

	/**
	 * 현재시각을 반환한다.
	 * 
	 * @return 현재일시
	 */
	public static Date getCurrentDateTime() {
		return Calendar.getInstance().getTime();
	}

	/**
	 * <code>java.util.Date</code>인 데이타를 날짜형식에 맞게 <code>java.lang.String</code>
	 * 으로 변환
	 * 
	 * @param date
	 *            변경대상이 되는 일자
	 * @param dateFormat
	 *            날짜형식
	 * @return 입력된 날짜형식으로 변환된 날짜문자열
	 */
	public static String toDateString(Date date, String dateFormat) {
		if (date == null)
			return null;
		SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
		return sdf.format(date);
	}

//	public static Date toDate(String dateString, String dateFormat) {
//		if (dateString == null || dateString.length() == 0)
//			return null;
//
//		try {
//			SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
//			return sdf.parse(dateString);
//		} catch (Exception e) {
//			return null;
//		}
//	}
//
//	public static String convertDateString(String source, String sourceFormart,
//			String targetFormat) {
//		if (source == null)
//			return null;
//		if (sourceFormart == null)
//			sourceFormart = "yyyyMMdd";
//		if (targetFormat == null)
//			targetFormat = "yyyyMMdd";
//		if (sourceFormart.equals(targetFormat))
//			return source;
//
//		SimpleDateFormat sdf = new SimpleDateFormat(sourceFormart);
//		try {
//			if ("yyyyMMdd".equals(sourceFormart)) {
//				String yyyyMM = source.substring(0, 6);
//				String dd = source.substring(6, 8);
//				Date firstDateOfMonth = toDate(yyyyMM, "yyyyMM");
//				if (dd.equals("31")) {
//					if (!getLastDateStringOfMonth(firstDateOfMonth, "yyyyMMdd")
//							.equals(source)) {
//						source = getLastDateStringOfMonth(firstDateOfMonth,
//								"yyyyMMdd");
//					}
//				}
//			}
//			Date date = sdf.parse(source);
//			sdf.applyPattern(targetFormat);
//			return sdf.format(date);
//		} catch (Exception e) {
//			return null;
//		}
//	}
//
//	public static String getLastDateStringOfMonth(Date date, String dateFormat) {
//		return toDateString(getLastDateOfMonth(date), dateFormat);
//	}
//
//	public static Date getLastDateOfMonth(Date date) {
//		Calendar calendar = Calendar.getInstance();
//		calendar.setTime(date);
//		calendar.set(Calendar.DAY_OF_MONTH,
//				calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
//
//		return calendar.getTime();
//	}
}
